/**
 * 日期工具函数
 * 主要解决iOS设备上日期格式兼容性问题
 */

/**
 * iOS兼容的日期解析函数
 * @param {string} dateString - 日期字符串，格式如 "2025-06-11 16:01:01"
 * @returns {Date} - Date对象
 */
export function parseDate(dateString) {
  if (!dateString) return new Date()
  
  // 将 "2025-06-11 16:01:01" 格式转换为 "2025/06/11 16:01:01" 格式
  // iOS 支持这种格式，避免 Invalid Date 错误
  const formattedDate = dateString.replace(/-/g, '/')
  return new Date(formattedDate)
}

/**
 * 格式化时间显示
 * @param {string} timeStr - 时间字符串
 * @param {boolean} showSeconds - 是否显示秒数，默认false
 * @returns {string} - 格式化后的时间字符串
 */
export function formatTime(timeStr, showSeconds = false) {
  if (!timeStr) return ''
  
  if (showSeconds) {
    return timeStr
  } else {
    // 移除秒数部分
    return timeStr.replace(/:\d{2}$/, '')
  }
}

/**
 * 计算两个时间之间的差值（毫秒）
 * @param {string} startTime - 开始时间
 * @param {string} endTime - 结束时间
 * @returns {number} - 时间差（毫秒）
 */
export function getTimeDiff(startTime, endTime) {
  const start = parseDate(startTime).getTime()
  const end = parseDate(endTime).getTime()
  return end - start
}

/**
 * 判断当前时间相对于给定时间段的状态
 * @param {string} startTime - 开始时间
 * @param {string} endTime - 结束时间
 * @returns {string} - 状态：'upcoming'(即将开始), 'active'(进行中), 'ended'(已结束)
 */
export function getTimeStatus(startTime, endTime) {
  if (!startTime || !endTime) return 'unknown'
  
  const now = Date.now()
  const start = parseDate(startTime).getTime()
  const end = parseDate(endTime).getTime()
  
  if (now < start) return 'upcoming'
  if (now > end) return 'ended'
  return 'active'
}

/**
 * 计算倒计时
 * @param {string} targetTime - 目标时间
 * @returns {Object} - 包含天、时、分、秒的对象
 */
export function getCountdown(targetTime) {
  const now = Date.now()
  const target = parseDate(targetTime).getTime()
  const diff = Math.max(0, target - now)
  
  const days = Math.floor(diff / (1000 * 60 * 60 * 24))
  const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
  const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60))
  const seconds = Math.floor((diff % (1000 * 60)) / 1000)
  
  return {
    days: String(days).padStart(2, '0'),
    hours: String(hours).padStart(2, '0'),
    minutes: String(minutes).padStart(2, '0'),
    seconds: String(seconds).padStart(2, '0'),
    totalSeconds: Math.floor(diff / 1000)
  }
} 